//package javaTest;
import java.util.Arrays;
public class ArrayList {
private Object[] elementData=new Object[2];
int size;
//���Ԫ��
public void add(Object o)
{
if(size<elementData.length)
{
elementData[size]=o;
}
else{
elementData=grow(elementData);
elementData[size]=o;
}
size++;
}
//ͨ���������Ԫ��
public void add(int index,Object o){
if(size<elementData.length)
{
addInner(elementData,index,o);
}
else{
elementData=grow(elementData);
addInner(elementData,index,o);
}
size++;
}
//ͨ��������ȡԪ��
public Object get(int index)
{
Object o=null;
for(int i=0;i<size;i++)
{
if(i==index)
{
o= elementData[i];
}
}
return o;
}
//ͨ������ɾ��Ԫ��
public Object remove(int index){
Object o=null;
if(index==size)
{
o=elementData[size];
}
else{
for(int i=0;i<size;i++)
{
if(i==index)
{
o=elementData[index];
for(int x=index;x<size-1;x++)
{
elementData[x]=elementData[x+1];
}
}
}
}
size--;
return o;
}
//ɾ�����һ��Ԫ��
/*public Object removeLast()
{
int size=this.size();
Object o=this.get(size-1);
size--;
return o;
}*/
//��ȡ��ǰԪ�ص���Ŀ
public int size()
{
return size;
}
//�������ݺ���
public Object[] grow(Object[] elementData)
{
return Arrays.copyOf(elementData, elementData.length*2);
}
//ͨ���������Ԫ�ص��ڲ�����
public void addInner(Object[] elementData,int index,Object o)
{
for(int i=0;i<size;i++)
{
if(i==index)
{
Object t=elementData[i];
elementData[i]=o;
for(int x=size;x>i;x--)
{
if(x==index+1)
{
elementData[x]=t;
}
else
{
elementData[x]=elementData[x-1];
}
}
}
}
}
public Iterator iterator()
{
return new ArrayListIterator(this);
}
private class ArrayListIterator implements Iterator
{
ArrayList l=null;
int pos=0;
private ArrayListIterator(ArrayList l)
{
this.l=l;
}
public boolean hasNext() {
// TODO Auto-generated method stub
boolean flag=true;
pos++;
if(pos>size)
{
flag=false;
}
return flag;
}
public Object next() {
// TODO Auto-generated method stub
return elementData[pos-1];
}
}
}